package crawler.web.parserJS;

import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.Tag;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.visitors.NodeVisitor;
import org.junit.Before;
import org.junit.Test;

/**
 * @author waynechen Feb 12, 2012 8:46:14 AM
 */
public class ParserDemo {
	private Parser parser = new Parser();

	@Before
	public void init() throws Exception {
		parser.setURL("http://www.baidu.com");
		parser.setEncoding(parser.getEncoding());
	}

	@Test
	public void visitor() throws Exception {
		NodeVisitor visitor = new NodeVisitor() {
			@Override
			public void visitTag(Tag tag) {
				if (tag instanceof LinkTag) {
					String link = ((LinkTag) tag).getLink();
					System.out.println(link);
				}
			}
		};
		parser.visitAllNodesWith(visitor);
	}

	@Test
	public void filter() throws Exception {
		NodeFilter filter = new NodeClassFilter(LinkTag.class);
		NodeList list = parser.extractAllNodesThatMatch(filter);
		for (int i = 0; i < list.size(); i++) {
			LinkTag tag = (LinkTag) list.elementAt(i);
			System.out.println(tag.extractLink());
		}

	}
}

//
//
//
//
//
//
//
//
//
//
//
//
//
//